
#pragma warning( disable: 4049 )  

#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif 

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif 

#ifndef __zAcTc_i_h__
#define __zAcTc_i_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef __IUcadToolProperties_FWD_DEFINED__
#define __IUcadToolProperties_FWD_DEFINED__
typedef interface IUcadToolProperties IUcadToolProperties;
#endif 	

#ifndef __IUcadToolProperties2_FWD_DEFINED__
#define __IUcadToolProperties2_FWD_DEFINED__
typedef interface IUcadToolProperties2 IUcadToolProperties2;
#endif 	

#ifndef __IUcadStockTool_FWD_DEFINED__
#define __IUcadStockTool_FWD_DEFINED__
typedef interface IUcadStockTool IUcadStockTool;
#endif 	

#ifndef __IUcadToolContextMenu_FWD_DEFINED__
#define __IUcadToolContextMenu_FWD_DEFINED__
typedef interface IUcadToolContextMenu IUcadToolContextMenu;
#endif 	

#ifndef __IUcadTool_FWD_DEFINED__
#define __IUcadTool_FWD_DEFINED__
typedef interface IUcadTool IUcadTool;
#endif 	

#ifndef __IUcadTool2_FWD_DEFINED__
#define __IUcadTool2_FWD_DEFINED__
typedef interface IUcadTool2 IUcadTool2;
#endif 	

#ifndef __IUcadToolFlyoutShape_FWD_DEFINED__
#define __IUcadToolFlyoutShape_FWD_DEFINED__
typedef interface IUcadToolFlyoutShape IUcadToolFlyoutShape;
#endif 	

#ifndef __IUcadToolSort_FWD_DEFINED__
#define __IUcadToolSort_FWD_DEFINED__
typedef interface IUcadToolSort IUcadToolSort;
#endif 	

#ifndef __IUcadToolDropTarget_FWD_DEFINED__
#define __IUcadToolDropTarget_FWD_DEFINED__
typedef interface IUcadToolDropTarget IUcadToolDropTarget;
#endif 	

#ifndef __IUcadToolDragSource_FWD_DEFINED__
#define __IUcadToolDragSource_FWD_DEFINED__
typedef interface IUcadToolDragSource IUcadToolDragSource;
#endif 	

#ifndef __IUcadToolCopyPaste_FWD_DEFINED__
#define __IUcadToolCopyPaste_FWD_DEFINED__
typedef interface IUcadToolCopyPaste IUcadToolCopyPaste;
#endif 	

#ifndef __IUcadToolImage_FWD_DEFINED__
#define __IUcadToolImage_FWD_DEFINED__
typedef interface IUcadToolImage IUcadToolImage;
#endif 	

#ifndef __UcadToolProperties_FWD_DEFINED__
#define __UcadToolProperties_FWD_DEFINED__

#ifdef __cplusplus
typedef class UcadToolProperties UcadToolProperties;
#else
typedef struct UcadToolProperties UcadToolProperties;
#endif 

#endif 	

#ifndef __UcadToolImage_FWD_DEFINED__
#define __UcadToolImage_FWD_DEFINED__

#ifdef __cplusplus
typedef class UcadToolImage UcadToolImage;
#else
typedef struct UcadToolImage UcadToolImage;
#endif 

#endif 	

#include "oaidl.h"
#include "ocidl.h"

#ifdef __cplusplus
extern "C"{
#endif 


typedef  
enum __MIDL___MIDL_itf_zAcTc_0000_0000_0001
    {
        kEditDefault	= 0,
        kEditCustom	= ( kEditDefault + 1 ) ,
        kEditNone	= ( kEditCustom + 1 ) ,
        kEditMultiple	= 0x4
    } 	ToolEditMode;

typedef  
enum __MIDL___MIDL_itf_zAcTc_0000_0000_0002
    {
        kContextNone	= -1,
        kContextMenuPaletteTool	= ( kContextNone + 1 ) ,
        kContextMenuEditorImage	= ( kContextMenuPaletteTool + 1 ) ,
        kContextMenuPaletteBackground	= ( kContextMenuEditorImage + 1 ) ,
        kContextMenuPaletteSetTab	= ( kContextMenuPaletteBackground + 1 ) ,
        kContextMenuPaletteSetCaption	= ( kContextMenuPaletteSetTab + 1 ) ,
        kContextMenuPaletteSetOptionButton	= ( kContextMenuPaletteSetCaption + 1 ) 
    } 	ContextMenuFlag;

typedef  
enum __MIDL___MIDL_itf_zAcTc_0000_0000_0003
    {
        kContextMenuShow	= 0,
        kContextMenuHide	= ( kContextMenuShow + 1 ) ,
        kExecutionCanceled	= ( kContextMenuHide + 1 ) ,
        kExecutionCancelRejected	= ( kExecutionCanceled + 1 ) ,
        kContextMenuUpdatePalette	= ( kExecutionCancelRejected + 1 ) 
    } 	ReturnFlag;

typedef  
enum __MIDL___MIDL_itf_zAcTc_0000_0000_0004
    {
        kLButtonClicked	= 0,
        kDroppedInDrawing	= ( kLButtonClicked + 1 ) 
    } 	ExecutionContext;



extern RPC_IF_HANDLE __MIDL_itf_zAcTc_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_zAcTc_0000_0000_v0_0_s_ifspec;

#ifndef __IUcadToolProperties_INTERFACE_DEFINED__
#define __IUcadToolProperties_INTERFACE_DEFINED__

EXTERN_C const IID IID_IUcadToolProperties;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC923006-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolProperties : public IDispatch
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE get_ID( 
             GUID *pId) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_Name( 
             BSTR *pVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_Name( 
             BSTR newVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_Description( 
             BSTR *pVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_Description( 
             BSTR newVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_ToolTipText( 
             BSTR *pVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_ToolTipText( 
             BSTR newVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_HelpFile( 
             BSTR *pVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_HelpFile( 
             BSTR newVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_HelpCommand( 
             BSTR *pVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_HelpCommand( 
             BSTR newVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_HelpData( 
             BSTR *pVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_HelpData( 
             BSTR newVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_IsReadOnly( 
             VARIANT_BOOL *pReadOnly) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_ToolType( 
             LONG *pToolType) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_ToolType( 
             LONG lToolType) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_IsFlyoutEnabled( 
             VARIANT_BOOL *pEnabled) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_IsFlyoutEnabled( 
             VARIANT_BOOL bUseFlyout) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_ShapePackageId( 
             GUID *pId) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_ShapePackageId( 
             GUID *pId) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_CurrentShapeId( 
             GUID *pId) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_CurrentShapeId( 
             GUID *pId) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_ActiveShapeIds( 
             VARIANT *pShapes) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_ActiveShapeIds( 
             VARIANT *pShapes) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetImage( 
             long cx,
             long cy,
             IUnknown **pVal,
             BSTR *sResourceName,
             BSTR *sSourceFile) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE SetImage( 
             long cx,
             long cy,
             IUnknown *newVal,
             BSTR sResourceName,
             BSTR sSourceFile) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetCustomData( 
             IUnknown **ppVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetCurrentShape( 
             IUnknown **ppTool) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetOverlayImage( 
             IUnknown **pVal,
             BSTR *pResourceName,
             BSTR *pSourceFile) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE SetOverlayImage( 
             IUnknown *newVal,
             BSTR sResourceName,
             BSTR sSourceFile) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetUcTcTool( 
             DWORD_PTR *ppUcTcTool) = 0;      
    };
    
#else 	

    typedef struct IUcadToolPropertiesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolProperties * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolProperties * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolProperties * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IUcadToolProperties * This,
             UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IUcadToolProperties * This,
             UINT iTInfo,
             LCID lcid,
             ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IUcadToolProperties * This,
             REFIID riid,
             LPOLESTR *rgszNames,
             UINT cNames,
             LCID lcid,
             DISPID *rgDispId);
        
         HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IUcadToolProperties * This,
             DISPID dispIdMember,
             REFIID riid,
             LCID lcid,
             WORD wFlags,
             DISPPARAMS *pDispParams,
             VARIANT *pVarResult,
             EXCEPINFO *pExcepInfo,
             UINT *puArgErr);
        
         HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            IUcadToolProperties * This,
             GUID *pId);
        
         HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            IUcadToolProperties * This,
             BSTR *pVal);
        
         HRESULT ( STDMETHODCALLTYPE *put_Name )( 
            IUcadToolProperties * This,
             BSTR newVal);
        
         HRESULT ( STDMETHODCALLTYPE *get_Description )( 
            IUcadToolProperties * This,
             BSTR *pVal);
        
         HRESULT ( STDMETHODCALLTYPE *put_Description )( 
            IUcadToolProperties * This,
             BSTR newVal);
        
         HRESULT ( STDMETHODCALLTYPE *get_ToolTipText )( 
            IUcadToolProperties * This,
             BSTR *pVal);
        
         HRESULT ( STDMETHODCALLTYPE *put_ToolTipText )( 
            IUcadToolProperties * This,
             BSTR newVal);
        
         HRESULT ( STDMETHODCALLTYPE *get_HelpFile )( 
            IUcadToolProperties * This,
             BSTR *pVal);
        
         HRESULT ( STDMETHODCALLTYPE *put_HelpFile )( 
            IUcadToolProperties * This,
             BSTR newVal);
        
         HRESULT ( STDMETHODCALLTYPE *get_HelpCommand )( 
            IUcadToolProperties * This,
             BSTR *pVal);
        
         HRESULT ( STDMETHODCALLTYPE *put_HelpCommand )( 
            IUcadToolProperties * This,
             BSTR newVal);
        
         HRESULT ( STDMETHODCALLTYPE *get_HelpData )( 
            IUcadToolProperties * This,
             BSTR *pVal);
        
         HRESULT ( STDMETHODCALLTYPE *put_HelpData )( 
            IUcadToolProperties * This,
             BSTR newVal);
        
         HRESULT ( STDMETHODCALLTYPE *get_IsReadOnly )( 
            IUcadToolProperties * This,
             VARIANT_BOOL *pReadOnly);
        
         HRESULT ( STDMETHODCALLTYPE *get_ToolType )( 
            IUcadToolProperties * This,
             LONG *pToolType);
        
         HRESULT ( STDMETHODCALLTYPE *put_ToolType )( 
            IUcadToolProperties * This,
             LONG lToolType);
        
         HRESULT ( STDMETHODCALLTYPE *get_IsFlyoutEnabled )( 
            IUcadToolProperties * This,
             VARIANT_BOOL *pEnabled);
        
         HRESULT ( STDMETHODCALLTYPE *put_IsFlyoutEnabled )( 
            IUcadToolProperties * This,
             VARIANT_BOOL bUseFlyout);
        
         HRESULT ( STDMETHODCALLTYPE *get_ShapePackageId )( 
            IUcadToolProperties * This,
             GUID *pId);
        
         HRESULT ( STDMETHODCALLTYPE *put_ShapePackageId )( 
            IUcadToolProperties * This,
             GUID *pId);
        
         HRESULT ( STDMETHODCALLTYPE *get_CurrentShapeId )( 
            IUcadToolProperties * This,
             GUID *pId);
        
         HRESULT ( STDMETHODCALLTYPE *put_CurrentShapeId )( 
            IUcadToolProperties * This,
             GUID *pId);
        
         HRESULT ( STDMETHODCALLTYPE *get_ActiveShapeIds )( 
            IUcadToolProperties * This,
             VARIANT *pShapes);
        
         HRESULT ( STDMETHODCALLTYPE *put_ActiveShapeIds )( 
            IUcadToolProperties * This,
             VARIANT *pShapes);
        
         HRESULT ( STDMETHODCALLTYPE *GetImage )( 
            IUcadToolProperties * This,
             long cx,
             long cy,
             IUnknown **pVal,
             BSTR *sResourceName,
             BSTR *sSourceFile);
        
         HRESULT ( STDMETHODCALLTYPE *SetImage )( 
            IUcadToolProperties * This,
             long cx,
             long cy,
             IUnknown *newVal,
             BSTR sResourceName,
             BSTR sSourceFile);
        
         HRESULT ( STDMETHODCALLTYPE *GetCustomData )( 
            IUcadToolProperties * This,
             IUnknown **ppVal);
        
         HRESULT ( STDMETHODCALLTYPE *GetCurrentShape )( 
            IUcadToolProperties * This,
             IUnknown **ppTool);
        
         HRESULT ( STDMETHODCALLTYPE *GetOverlayImage )( 
            IUcadToolProperties * This,
             IUnknown **pVal,
             BSTR *pResourceName,
             BSTR *pSourceFile);
        
         HRESULT ( STDMETHODCALLTYPE *SetOverlayImage )( 
            IUcadToolProperties * This,
             IUnknown *newVal,
             BSTR sResourceName,
             BSTR sSourceFile);
        
         HRESULT ( STDMETHODCALLTYPE *GetUcTcTool )( 
            IUcadToolProperties * This,
             DWORD_PTR *ppUcTcTool);
        
        END_INTERFACE
    } IUcadToolPropertiesVtbl;

    interface IUcadToolProperties
    {
        CONST_VTBL struct IUcadToolPropertiesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolProperties_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolProperties_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolProperties_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolProperties_GetTypeInfoCount(This,pctinfo)	\
    ((This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)) 

#define IUcadToolProperties_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ((This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)) 

#define IUcadToolProperties_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ((This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)) 

#define IUcadToolProperties_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ((This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)) 


#define IUcadToolProperties_get_ID(This,pId)	\
    ((This)->lpVtbl -> get_ID(This,pId)) 

#define IUcadToolProperties_get_Name(This,pVal)	\
    ((This)->lpVtbl -> get_Name(This,pVal)) 

#define IUcadToolProperties_put_Name(This,newVal)	\
    ((This)->lpVtbl -> put_Name(This,newVal)) 

#define IUcadToolProperties_get_Description(This,pVal)	\
    ((This)->lpVtbl -> get_Description(This,pVal)) 

#define IUcadToolProperties_put_Description(This,newVal)	\
    ((This)->lpVtbl -> put_Description(This,newVal)) 

#define IUcadToolProperties_get_ToolTipText(This,pVal)	\
    ((This)->lpVtbl -> get_ToolTipText(This,pVal)) 

#define IUcadToolProperties_put_ToolTipText(This,newVal)	\
    ((This)->lpVtbl -> put_ToolTipText(This,newVal)) 

#define IUcadToolProperties_get_HelpFile(This,pVal)	\
    ((This)->lpVtbl -> get_HelpFile(This,pVal)) 

#define IUcadToolProperties_put_HelpFile(This,newVal)	\
    ((This)->lpVtbl -> put_HelpFile(This,newVal)) 

#define IUcadToolProperties_get_HelpCommand(This,pVal)	\
    ((This)->lpVtbl -> get_HelpCommand(This,pVal)) 

#define IUcadToolProperties_put_HelpCommand(This,newVal)	\
    ((This)->lpVtbl -> put_HelpCommand(This,newVal)) 

#define IUcadToolProperties_get_HelpData(This,pVal)	\
    ((This)->lpVtbl -> get_HelpData(This,pVal)) 

#define IUcadToolProperties_put_HelpData(This,newVal)	\
    ((This)->lpVtbl -> put_HelpData(This,newVal)) 

#define IUcadToolProperties_get_IsReadOnly(This,pReadOnly)	\
    ((This)->lpVtbl -> get_IsReadOnly(This,pReadOnly)) 

#define IUcadToolProperties_get_ToolType(This,pToolType)	\
    ((This)->lpVtbl -> get_ToolType(This,pToolType)) 

#define IUcadToolProperties_put_ToolType(This,lToolType)	\
    ((This)->lpVtbl -> put_ToolType(This,lToolType)) 

#define IUcadToolProperties_get_IsFlyoutEnabled(This,pEnabled)	\
    ((This)->lpVtbl -> get_IsFlyoutEnabled(This,pEnabled)) 

#define IUcadToolProperties_put_IsFlyoutEnabled(This,bUseFlyout)	\
    ((This)->lpVtbl -> put_IsFlyoutEnabled(This,bUseFlyout)) 

#define IUcadToolProperties_get_ShapePackageId(This,pId)	\
    ((This)->lpVtbl -> get_ShapePackageId(This,pId)) 

#define IUcadToolProperties_put_ShapePackageId(This,pId)	\
    ((This)->lpVtbl -> put_ShapePackageId(This,pId)) 

#define IUcadToolProperties_get_CurrentShapeId(This,pId)	\
    ((This)->lpVtbl -> get_CurrentShapeId(This,pId)) 

#define IUcadToolProperties_put_CurrentShapeId(This,pId)	\
    ((This)->lpVtbl -> put_CurrentShapeId(This,pId)) 

#define IUcadToolProperties_get_ActiveShapeIds(This,pShapes)	\
    ((This)->lpVtbl -> get_ActiveShapeIds(This,pShapes)) 

#define IUcadToolProperties_put_ActiveShapeIds(This,pShapes)	\
    ((This)->lpVtbl -> put_ActiveShapeIds(This,pShapes)) 

#define IUcadToolProperties_GetImage(This,cx,cy,pVal,sResourceName,sSourceFile)	\
    ((This)->lpVtbl -> GetImage(This,cx,cy,pVal,sResourceName,sSourceFile)) 

#define IUcadToolProperties_SetImage(This,cx,cy,newVal,sResourceName,sSourceFile)	\
    ((This)->lpVtbl -> SetImage(This,cx,cy,newVal,sResourceName,sSourceFile)) 

#define IUcadToolProperties_GetCustomData(This,ppVal)	\
    ((This)->lpVtbl -> GetCustomData(This,ppVal)) 

#define IUcadToolProperties_GetCurrentShape(This,ppTool)	\
    ((This)->lpVtbl -> GetCurrentShape(This,ppTool)) 

#define IUcadToolProperties_GetOverlayImage(This,pVal,pResourceName,pSourceFile)	\
    ((This)->lpVtbl -> GetOverlayImage(This,pVal,pResourceName,pSourceFile)) 

#define IUcadToolProperties_SetOverlayImage(This,newVal,sResourceName,sSourceFile)	\
    ((This)->lpVtbl -> SetOverlayImage(This,newVal,sResourceName,sSourceFile)) 

#define IUcadToolProperties_GetUcTcTool(This,ppUcTcTool)	\
    (This)->lpVtbl -> GetUcTcTool(This,ppUcTcTool)

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolProperties2_INTERFACE_DEFINED__
#define __IUcadToolProperties2_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolProperties2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC92303E-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolProperties2 : public IDispatch
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE get_ItemOption( 
             LONG *pItemOption) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_ItemOption( 
             LONG lItemOption) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE get_ImageOption( 
             LONG *pImageOption) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE put_ImageOption( 
             LONG lImageOption) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolProperties2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolProperties2 * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolProperties2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolProperties2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IUcadToolProperties2 * This,
             UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IUcadToolProperties2 * This,
             UINT iTInfo,
             LCID lcid,
             ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IUcadToolProperties2 * This,
             REFIID riid,
             LPOLESTR *rgszNames,
             UINT cNames,
             LCID lcid,
             DISPID *rgDispId);
        
         HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IUcadToolProperties2 * This,
             DISPID dispIdMember,
             REFIID riid,
             LCID lcid,
             WORD wFlags,
             DISPPARAMS *pDispParams,
             VARIANT *pVarResult,
             EXCEPINFO *pExcepInfo,
             UINT *puArgErr);
        
         HRESULT ( STDMETHODCALLTYPE *get_ItemOption )( 
            IUcadToolProperties2 * This,
             LONG *pItemOption);
        
         HRESULT ( STDMETHODCALLTYPE *put_ItemOption )( 
            IUcadToolProperties2 * This,
             LONG lItemOption);
        
         HRESULT ( STDMETHODCALLTYPE *get_ImageOption )( 
            IUcadToolProperties2 * This,
             LONG *pImageOption);
        
         HRESULT ( STDMETHODCALLTYPE *put_ImageOption )( 
            IUcadToolProperties2 * This,
             LONG lImageOption);
        
        END_INTERFACE
    } IUcadToolProperties2Vtbl;

    interface IUcadToolProperties2
    {
        CONST_VTBL struct IUcadToolProperties2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolProperties2_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolProperties2_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolProperties2_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolProperties2_GetTypeInfoCount(This,pctinfo)	\
    ((This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)) 

#define IUcadToolProperties2_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ((This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)) 

#define IUcadToolProperties2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ((This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)) 

#define IUcadToolProperties2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ((This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)) 


#define IUcadToolProperties2_get_ItemOption(This,pItemOption)	\
    ((This)->lpVtbl -> get_ItemOption(This,pItemOption)) 

#define IUcadToolProperties2_put_ItemOption(This,lItemOption)	\
    ((This)->lpVtbl -> put_ItemOption(This,lItemOption)) 

#define IUcadToolProperties2_get_ImageOption(This,pImageOption)	\
    ((This)->lpVtbl -> get_ImageOption(This,pImageOption)) 

#define IUcadToolProperties2_put_ImageOption(This,lImageOption)	\
    ((This)->lpVtbl -> put_ImageOption(This,lImageOption)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadStockTool_INTERFACE_DEFINED__
#define __IUcadStockTool_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadStockTool;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC9230FD-5A17-11E7-B72E-BC5FF42AC839")
    IUcadStockTool : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE CreateTool( 
             IUnknown **ppTool) = 0;
        
    };
    
#else 	

    typedef struct IUcadStockToolVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadStockTool * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadStockTool * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadStockTool * This);
        
         HRESULT ( STDMETHODCALLTYPE *CreateTool )( 
            IUcadStockTool * This,
             IUnknown **ppTool);
        
        END_INTERFACE
    } IUcadStockToolVtbl;

    interface IUcadStockTool
    {
        CONST_VTBL struct IUcadStockToolVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadStockTool_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadStockTool_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadStockTool_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadStockTool_CreateTool(This,ppTool)	\
    ((This)->lpVtbl -> CreateTool(This,ppTool)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolContextMenu_INTERFACE_DEFINED__
#define __IUcadToolContextMenu_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolContextMenu;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC923113-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolContextMenu : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE Customize( 
             int nContextFlag,
             DWORD_PTR hMenu,
             UINT idCmdFirst,
             UINT idCmdLast,
             GUID *pPaletteId,
             DWORD *pFlag) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetMenuHelp( 
             UINT idCmd,
             BSTR *pbstrHelpText) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE InvokeMenuCommand( 
             UINT idCmd,
             GUID *pPaletteId,
             DWORD_PTR hWnd,
             DWORD *pFlag) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolContextMenuVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolContextMenu * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolContextMenu * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolContextMenu * This);
        
         HRESULT ( STDMETHODCALLTYPE *Customize )( 
            IUcadToolContextMenu * This,
             int nContextFlag,
             DWORD_PTR hMenu,
             UINT idCmdFirst,
             UINT idCmdLast,
             GUID *pPaletteId,
             DWORD *pFlag);
        
         HRESULT ( STDMETHODCALLTYPE *GetMenuHelp )( 
            IUcadToolContextMenu * This,
             UINT idCmd,
             BSTR *pbstrHelpText);
        
         HRESULT ( STDMETHODCALLTYPE *InvokeMenuCommand )( 
            IUcadToolContextMenu * This,
             UINT idCmd,
             GUID *pPaletteId,
             DWORD_PTR hWnd,
             DWORD *pFlag);
        
        END_INTERFACE
    } IUcadToolContextMenuVtbl;

    interface IUcadToolContextMenu
    {
        CONST_VTBL struct IUcadToolContextMenuVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolContextMenu_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolContextMenu_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolContextMenu_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolContextMenu_Customize(This,nContextFlag,hMenu,idCmdFirst,idCmdLast,pPaletteId,pFlag)	\
    ((This)->lpVtbl -> Customize(This,nContextFlag,hMenu,idCmdFirst,idCmdLast,pPaletteId,pFlag)) 

#define IUcadToolContextMenu_GetMenuHelp(This,idCmd,pbstrHelpText)	\
    ((This)->lpVtbl -> GetMenuHelp(This,idCmd,pbstrHelpText)) 

#define IUcadToolContextMenu_InvokeMenuCommand(This,idCmd,pPaletteId,hWnd,pFlag)	\
    ((This)->lpVtbl -> InvokeMenuCommand(This,idCmd,pPaletteId,hWnd,pFlag)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadTool_INTERFACE_DEFINED__
#define __IUcadTool_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadTool;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC9231AF-5A17-11E7-B72E-BC5FF42AC839")
    IUcadTool : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE get_EditMode( 
             long *pVal) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetStockTool( 
             IUnknown **ppToolClass) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE SetToolProperties( 
             IUnknown *pProp) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Load( 
             IUnknown *pXmlElement) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Save( 
             IUnknown *pXmlElement) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Execute( 
             LONG_PTR lFlag,
             DWORD_PTR hWnd,
             DWORD point,
             DWORD dwKeyState) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetData( 
             VARIANT *pObjUnkArray,
             VARIANT *pDynUnkArray) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE BeginEdit( void) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Edit( 
             IUnknown *pProp,
             LONG_PTR hWndParent,
             VARIANT_BOOL *pRet) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE EndEdit( 
             VARIANT_BOOL bEditCancelled) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE New( void) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetDropTarget( 
             IUnknown **ppDropTarget) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetContextMenu( 
             INT_PTR nContextFlag,
             DWORD_PTR hMenu,
             UINT idCmdFirst,
             UINT idCmdLast,
             DWORD_PTR *pFlag) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetCommandString( 
             UINT idCmd,
             BSTR *pbstrHelpText) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE InvokeCommand( 
             UINT idCmd,
             DWORD_PTR hWnd) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetDragDropContextInfo( 
             IUnknown *pIUnknown,
             BSTR *pbstrText,
             DWORD *pFlag) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Dropped( 
             BSTR bstrUrl) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Refreshed( 
             BSTR bstrUrl) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE SetEditorWindow( 
             LONG_PTR hWndEditor,
             IUnknown *pPropInspector) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE ValidateEditChanges( void) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetToolProperties( 
             IUnknown **pToolProp) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE BeginMultipleEdit( 
             VARIANT tools,
             VARIANT stockToolIds) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE EndMultipleEdit( 
             VARIANT tools,
             VARIANT stockToolIds,
             VARIANT_BOOL bEditCancelled) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE MultipleEdit( 
             VARIANT tools,
             VARIANT stockToolIds,
             LONG_PTR hWndParent,
             VARIANT_BOOL *pRet) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadTool * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadTool * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadTool * This);
        
         HRESULT ( STDMETHODCALLTYPE *get_EditMode )( 
            IUcadTool * This,
             long *pVal);
        
         HRESULT ( STDMETHODCALLTYPE *GetStockTool )( 
            IUcadTool * This,
             IUnknown **ppToolClass);
        
         HRESULT ( STDMETHODCALLTYPE *SetToolProperties )( 
            IUcadTool * This,
             IUnknown *pProp);
        
         HRESULT ( STDMETHODCALLTYPE *Load )( 
            IUcadTool * This,
             IUnknown *pXmlElement);
        
         HRESULT ( STDMETHODCALLTYPE *Save )( 
            IUcadTool * This,
             IUnknown *pXmlElement);
        
         HRESULT ( STDMETHODCALLTYPE *Execute )( 
            IUcadTool * This,
             LONG_PTR lFlag,
             DWORD_PTR hWnd,
             DWORD point,
             DWORD dwKeyState);
        
         HRESULT ( STDMETHODCALLTYPE *GetData )( 
            IUcadTool * This,
             VARIANT *pObjUnkArray,
             VARIANT *pDynUnkArray);
        
         HRESULT ( STDMETHODCALLTYPE *BeginEdit )( 
            IUcadTool * This);
        
         HRESULT ( STDMETHODCALLTYPE *Edit )( 
            IUcadTool * This,
             IUnknown *pProp,
             LONG_PTR hWndParent,
             VARIANT_BOOL *pRet);
        
         HRESULT ( STDMETHODCALLTYPE *EndEdit )( 
            IUcadTool * This,
             VARIANT_BOOL bEditCancelled);
        
         HRESULT ( STDMETHODCALLTYPE *New )( 
            IUcadTool * This);
        
         HRESULT ( STDMETHODCALLTYPE *GetDropTarget )( 
            IUcadTool * This,
             IUnknown **ppDropTarget);
        
         HRESULT ( STDMETHODCALLTYPE *GetContextMenu )( 
            IUcadTool * This,
             INT_PTR nContextFlag,
             DWORD_PTR hMenu,
             UINT idCmdFirst,
             UINT idCmdLast,
             DWORD_PTR *pFlag);
        
         HRESULT ( STDMETHODCALLTYPE *GetCommandString )( 
            IUcadTool * This,
             UINT idCmd,
             BSTR *pbstrHelpText);
        
         HRESULT ( STDMETHODCALLTYPE *InvokeCommand )( 
            IUcadTool * This,
             UINT idCmd,
             DWORD_PTR hWnd);
        
         HRESULT ( STDMETHODCALLTYPE *GetDragDropContextInfo )( 
            IUcadTool * This,
             IUnknown *pIUnknown,
             BSTR *pbstrText,
             DWORD *pFlag);
        
         HRESULT ( STDMETHODCALLTYPE *Dropped )( 
            IUcadTool * This,
             BSTR bstrUrl);
        
         HRESULT ( STDMETHODCALLTYPE *Refreshed )( 
            IUcadTool * This,
             BSTR bstrUrl);
        
         HRESULT ( STDMETHODCALLTYPE *SetEditorWindow )( 
            IUcadTool * This,
             LONG_PTR hWndEditor,
             IUnknown *pPropInspector);
        
         HRESULT ( STDMETHODCALLTYPE *ValidateEditChanges )( 
            IUcadTool * This);
        
         HRESULT ( STDMETHODCALLTYPE *GetToolProperties )( 
            IUcadTool * This,
             IUnknown **pToolProp);
        
         HRESULT ( STDMETHODCALLTYPE *BeginMultipleEdit )( 
            IUcadTool * This,
             VARIANT tools,
             VARIANT stockToolIds);
        
         HRESULT ( STDMETHODCALLTYPE *EndMultipleEdit )( 
            IUcadTool * This,
             VARIANT tools,
             VARIANT stockToolIds,
             VARIANT_BOOL bEditCancelled);
        
         HRESULT ( STDMETHODCALLTYPE *MultipleEdit )( 
            IUcadTool * This,
             VARIANT tools,
             VARIANT stockToolIds,
             LONG_PTR hWndParent,
             VARIANT_BOOL *pRet);
        
        END_INTERFACE
    } IUcadToolVtbl;

    interface IUcadTool
    {
        CONST_VTBL struct IUcadToolVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadTool_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadTool_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadTool_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadTool_get_EditMode(This,pVal)	\
    ((This)->lpVtbl -> get_EditMode(This,pVal)) 

#define IUcadTool_GetStockTool(This,ppToolClass)	\
    ((This)->lpVtbl -> GetStockTool(This,ppToolClass)) 

#define IUcadTool_SetToolProperties(This,pProp)	\
    ((This)->lpVtbl -> SetToolProperties(This,pProp)) 

#define IUcadTool_Load(This,pXmlElement)	\
    ((This)->lpVtbl -> Load(This,pXmlElement)) 

#define IUcadTool_Save(This,pXmlElement)	\
    ((This)->lpVtbl -> Save(This,pXmlElement)) 

#define IUcadTool_Execute(This,lFlag,hWnd,point,dwKeyState)	\
    ((This)->lpVtbl -> Execute(This,lFlag,hWnd,point,dwKeyState)) 

#define IUcadTool_GetData(This,pObjUnkArray,pDynUnkArray)	\
    ((This)->lpVtbl -> GetData(This,pObjUnkArray,pDynUnkArray)) 

#define IUcadTool_BeginEdit(This)	\
    ((This)->lpVtbl -> BeginEdit(This)) 

#define IUcadTool_Edit(This,pProp,hWndParent,pRet)	\
    ((This)->lpVtbl -> Edit(This,pProp,hWndParent,pRet)) 

#define IUcadTool_EndEdit(This,bEditCancelled)	\
    ((This)->lpVtbl -> EndEdit(This,bEditCancelled)) 

#define IUcadTool_New(This)	\
    ((This)->lpVtbl -> New(This)) 

#define IUcadTool_GetDropTarget(This,ppDropTarget)	\
    ((This)->lpVtbl -> GetDropTarget(This,ppDropTarget)) 

#define IUcadTool_GetContextMenu(This,nContextFlag,hMenu,idCmdFirst,idCmdLast,pFlag)	\
    ((This)->lpVtbl -> GetContextMenu(This,nContextFlag,hMenu,idCmdFirst,idCmdLast,pFlag)) 

#define IUcadTool_GetCommandString(This,idCmd,pbstrHelpText)	\
    ((This)->lpVtbl -> GetCommandString(This,idCmd,pbstrHelpText)) 

#define IUcadTool_InvokeCommand(This,idCmd,hWnd)	\
    ((This)->lpVtbl -> InvokeCommand(This,idCmd,hWnd)) 

#define IUcadTool_GetDragDropContextInfo(This,pIUnknown,pbstrText,pFlag)	\
    ((This)->lpVtbl -> GetDragDropContextInfo(This,pIUnknown,pbstrText,pFlag)) 

#define IUcadTool_Dropped(This,bstrUrl)	\
    ((This)->lpVtbl -> Dropped(This,bstrUrl)) 

#define IUcadTool_Refreshed(This,bstrUrl)	\
    ((This)->lpVtbl -> Refreshed(This,bstrUrl)) 

#define IUcadTool_SetEditorWindow(This,hWndEditor,pPropInspector)	\
    ((This)->lpVtbl -> SetEditorWindow(This,hWndEditor,pPropInspector)) 

#define IUcadTool_ValidateEditChanges(This)	\
    ((This)->lpVtbl -> ValidateEditChanges(This)) 

#define IUcadTool_GetToolProperties(This,pToolProp)	\
    ((This)->lpVtbl -> GetToolProperties(This,pToolProp)) 

#define IUcadTool_BeginMultipleEdit(This,tools,stockToolIds)	\
    ((This)->lpVtbl -> BeginMultipleEdit(This,tools,stockToolIds)) 

#define IUcadTool_EndMultipleEdit(This,tools,stockToolIds,bEditCancelled)	\
    ((This)->lpVtbl -> EndMultipleEdit(This,tools,stockToolIds,bEditCancelled)) 

#define IUcadTool_MultipleEdit(This,tools,stockToolIds,hWndParent,pRet)	\
    ((This)->lpVtbl -> MultipleEdit(This,tools,stockToolIds,hWndParent,pRet)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadTool2_INTERFACE_DEFINED__
#define __IUcadTool2_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadTool2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC9230CD-5A17-11E7-B72E-BC5FF42AC839")
    IUcadTool2 : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE UpdateImage( void) = 0;
        
    };
    
#else 	

    typedef struct IUcadTool2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadTool2 * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadTool2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadTool2 * This);
        
         HRESULT ( STDMETHODCALLTYPE *UpdateImage )( 
            IUcadTool2 * This);
        
        END_INTERFACE
    } IUcadTool2Vtbl;

    interface IUcadTool2
    {
        CONST_VTBL struct IUcadTool2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadTool2_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadTool2_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadTool2_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadTool2_UpdateImage(This)	\
    ((This)->lpVtbl -> UpdateImage(This)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolFlyoutShape_INTERFACE_DEFINED__
#define __IUcadToolFlyoutShape_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolFlyoutShape;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC9230B2-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolFlyoutShape : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE SetFlyoutTools( 
             VARIANT *pFlyoutToolIds) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolFlyoutShapeVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolFlyoutShape * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolFlyoutShape * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolFlyoutShape * This);
        
         HRESULT ( STDMETHODCALLTYPE *SetFlyoutTools )( 
            IUcadToolFlyoutShape * This,
             VARIANT *pFlyoutToolIds);
        
        END_INTERFACE
    } IUcadToolFlyoutShapeVtbl;

    interface IUcadToolFlyoutShape
    {
        CONST_VTBL struct IUcadToolFlyoutShapeVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolFlyoutShape_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolFlyoutShape_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolFlyoutShape_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolFlyoutShape_SetFlyoutTools(This,pFlyoutToolIds)	\
    ((This)->lpVtbl -> SetFlyoutTools(This,pFlyoutToolIds)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolSort_INTERFACE_DEFINED__
#define __IUcadToolSort_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolSort;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC92318B-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolSort : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE Compare( 
             IUnknown *pTool,
             long lSortOption,
             long *pResult) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolSortVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolSort * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolSort * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolSort * This);
        
         HRESULT ( STDMETHODCALLTYPE *Compare )( 
            IUcadToolSort * This,
             IUnknown *pTool,
             long lSortOption,
             long *pResult);
        
        END_INTERFACE
    } IUcadToolSortVtbl;

    interface IUcadToolSort
    {
        CONST_VTBL struct IUcadToolSortVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolSort_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolSort_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolSort_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolSort_Compare(This,pTool,lSortOption,pResult)	\
    ((This)->lpVtbl -> Compare(This,pTool,lSortOption,pResult)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolDropTarget_INTERFACE_DEFINED__
#define __IUcadToolDropTarget_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolDropTarget;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC9231AA-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolDropTarget : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE DragEnter( 
             IDataObject *pDataObj,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pdwEffect) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE DragOver( 
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pdwEffect) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE DragLeave( void) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Drop( 
             IDataObject *pDataObj,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pdwEffect,
             GUID *pCurrentStockToolId,
             GUID *pParentId,
             VARIANT *pNewToolIds) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetDragDropContextMenuItem( 
             IUnknown *pIUnknown,
             BSTR *pbstrText,
             DWORD *pFlag) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolDropTargetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolDropTarget * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolDropTarget * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolDropTarget * This);
        
         HRESULT ( STDMETHODCALLTYPE *DragEnter )( 
            IUcadToolDropTarget * This,
             IDataObject *pDataObj,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pdwEffect);
        
         HRESULT ( STDMETHODCALLTYPE *DragOver )( 
            IUcadToolDropTarget * This,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pdwEffect);
        
         HRESULT ( STDMETHODCALLTYPE *DragLeave )( 
            IUcadToolDropTarget * This);
        
         HRESULT ( STDMETHODCALLTYPE *Drop )( 
            IUcadToolDropTarget * This,
             IDataObject *pDataObj,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pdwEffect,
             GUID *pCurrentStockToolId,
             GUID *pParentId,
             VARIANT *pNewToolIds);
        
         HRESULT ( STDMETHODCALLTYPE *GetDragDropContextMenuItem )( 
            IUcadToolDropTarget * This,
             IUnknown *pIUnknown,
             BSTR *pbstrText,
             DWORD *pFlag);
        
        END_INTERFACE
    } IUcadToolDropTargetVtbl;

    interface IUcadToolDropTarget
    {
        CONST_VTBL struct IUcadToolDropTargetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolDropTarget_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolDropTarget_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolDropTarget_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolDropTarget_DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect)	\
    ((This)->lpVtbl -> DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect)) 

#define IUcadToolDropTarget_DragOver(This,grfKeyState,pt,pdwEffect)	\
    ((This)->lpVtbl -> DragOver(This,grfKeyState,pt,pdwEffect)) 

#define IUcadToolDropTarget_DragLeave(This)	\
    ((This)->lpVtbl -> DragLeave(This)) 

#define IUcadToolDropTarget_Drop(This,pDataObj,grfKeyState,pt,pdwEffect,pCurrentStockToolId,pParentId,pNewToolIds)	\
    ((This)->lpVtbl -> Drop(This,pDataObj,grfKeyState,pt,pdwEffect,pCurrentStockToolId,pParentId,pNewToolIds)) 

#define IUcadToolDropTarget_GetDragDropContextMenuItem(This,pIUnknown,pbstrText,pFlag)	\
    ((This)->lpVtbl -> GetDragDropContextMenuItem(This,pIUnknown,pbstrText,pFlag)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolDragSource_INTERFACE_DEFINED__
#define __IUcadToolDragSource_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolDragSource;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC923052-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolDragSource : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE BeginDrag( 
             VARIANT *pToolIds,
             VARIANT *pAllStockToolIds,
             GUID *pCurrentStockToolId,
             IDataObject *pDataObject,
             DWORD dwKeyState) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE DragInProgress( 
             DWORD dwDropEffect) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE EndDrag( 
             DWORD dwDropEffect) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE DragEnterDrawing( 
             IDataObject *pDataObject,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pDropEffect) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE DragOverDrawing( 
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pDropEffect) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE DragLeaveDrawing( void) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE DropInDrawing( 
             IDataObject *pDataObject,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pDropEffect) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolDragSourceVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolDragSource * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolDragSource * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolDragSource * This);
        
         HRESULT ( STDMETHODCALLTYPE *BeginDrag )( 
            IUcadToolDragSource * This,
             VARIANT *pToolIds,
             VARIANT *pAllStockToolIds,
             GUID *pCurrentStockToolId,
             IDataObject *pDataObject,
             DWORD dwKeyState);
        
         HRESULT ( STDMETHODCALLTYPE *DragInProgress )( 
            IUcadToolDragSource * This,
             DWORD dwDropEffect);
        
         HRESULT ( STDMETHODCALLTYPE *EndDrag )( 
            IUcadToolDragSource * This,
             DWORD dwDropEffect);
        
         HRESULT ( STDMETHODCALLTYPE *DragEnterDrawing )( 
            IUcadToolDragSource * This,
             IDataObject *pDataObject,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pDropEffect);
        
         HRESULT ( STDMETHODCALLTYPE *DragOverDrawing )( 
            IUcadToolDragSource * This,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pDropEffect);
        
         HRESULT ( STDMETHODCALLTYPE *DragLeaveDrawing )( 
            IUcadToolDragSource * This);
        
         HRESULT ( STDMETHODCALLTYPE *DropInDrawing )( 
            IUcadToolDragSource * This,
             IDataObject *pDataObject,
             DWORD grfKeyState,
             POINTL pt,
             DWORD *pDropEffect);
        
        END_INTERFACE
    } IUcadToolDragSourceVtbl;

    interface IUcadToolDragSource
    {
        CONST_VTBL struct IUcadToolDragSourceVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolDragSource_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolDragSource_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolDragSource_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolDragSource_BeginDrag(This,pToolIds,pAllStockToolIds,pCurrentStockToolId,pDataObject,dwKeyState)	\
    ((This)->lpVtbl -> BeginDrag(This,pToolIds,pAllStockToolIds,pCurrentStockToolId,pDataObject,dwKeyState)) 

#define IUcadToolDragSource_DragInProgress(This,dwDropEffect)	\
    ((This)->lpVtbl -> DragInProgress(This,dwDropEffect)) 

#define IUcadToolDragSource_EndDrag(This,dwDropEffect)	\
    ((This)->lpVtbl -> EndDrag(This,dwDropEffect)) 

#define IUcadToolDragSource_DragEnterDrawing(This,pDataObject,grfKeyState,pt,pDropEffect)	\
    ((This)->lpVtbl -> DragEnterDrawing(This,pDataObject,grfKeyState,pt,pDropEffect)) 

#define IUcadToolDragSource_DragOverDrawing(This,grfKeyState,pt,pDropEffect)	\
    ((This)->lpVtbl -> DragOverDrawing(This,grfKeyState,pt,pDropEffect)) 

#define IUcadToolDragSource_DragLeaveDrawing(This)	\
    ((This)->lpVtbl -> DragLeaveDrawing(This)) 

#define IUcadToolDragSource_DropInDrawing(This,pDataObject,grfKeyState,pt,pDropEffect)	\
    ((This)->lpVtbl -> DropInDrawing(This,pDataObject,grfKeyState,pt,pDropEffect)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolCopyPaste_INTERFACE_DEFINED__
#define __IUcadToolCopyPaste_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolCopyPaste;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC923129-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolCopyPaste : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE Copy( 
             VARIANT *pToolIds,
             VARIANT *pAllStockToolIds,
             GUID *pCurrentStockToolId,
             IDataObject *pDataObject) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Paste( 
             GUID *pCurrentStockToolId,
             GUID *pParentId,
             IDataObject *pDataObject,
             VARIANT *pNewToolIds) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE CanPaste( 
             IDataObject *pDataObject,
             VARIANT_BOOL *pCanPaste) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolCopyPasteVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolCopyPaste * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolCopyPaste * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolCopyPaste * This);
        
         HRESULT ( STDMETHODCALLTYPE *Copy )( 
            IUcadToolCopyPaste * This,
             VARIANT *pToolIds,
             VARIANT *pAllStockToolIds,
             GUID *pCurrentStockToolId,
             IDataObject *pDataObject);
        
         HRESULT ( STDMETHODCALLTYPE *Paste )( 
            IUcadToolCopyPaste * This,
             GUID *pCurrentStockToolId,
             GUID *pParentId,
             IDataObject *pDataObject,
             VARIANT *pNewToolIds);
        
         HRESULT ( STDMETHODCALLTYPE *CanPaste )( 
            IUcadToolCopyPaste * This,
             IDataObject *pDataObject,
             VARIANT_BOOL *pCanPaste);
        
        END_INTERFACE
    } IUcadToolCopyPasteVtbl;

    interface IUcadToolCopyPaste
    {
        CONST_VTBL struct IUcadToolCopyPasteVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolCopyPaste_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolCopyPaste_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolCopyPaste_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolCopyPaste_Copy(This,pToolIds,pAllStockToolIds,pCurrentStockToolId,pDataObject)	\
    ((This)->lpVtbl -> Copy(This,pToolIds,pAllStockToolIds,pCurrentStockToolId,pDataObject)) 

#define IUcadToolCopyPaste_Paste(This,pCurrentStockToolId,pParentId,pDataObject,pNewToolIds)	\
    ((This)->lpVtbl -> Paste(This,pCurrentStockToolId,pParentId,pDataObject,pNewToolIds)) 

#define IUcadToolCopyPaste_CanPaste(This,pDataObject,pCanPaste)	\
    ((This)->lpVtbl -> CanPaste(This,pDataObject,pCanPaste)) 

#endif 


#endif 	




#endif 	


#ifndef __IUcadToolImage_INTERFACE_DEFINED__
#define __IUcadToolImage_INTERFACE_DEFINED__


 


EXTERN_C const IID IID_IUcadToolImage;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EC922FE9-5A17-11E7-B72E-BC5FF42AC839")
    IUcadToolImage : public IUnknown
    {
    public:
        virtual  HRESULT STDMETHODCALLTYPE Load( 
             BSTR bsFileName) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Save( 
             BSTR bsFileName) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE Render( 
             HDC hdc,
             long x,
             long y,
             long cx,
             long cy,
             long nStyle,
             VARIANT_BOOL bTransparentBitmap) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetSize( 
             long *pWidth,
             long *pHeight) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE GetType( 
             short *pType) = 0;
        
        virtual  HRESULT STDMETHODCALLTYPE IsImageLoaded( 
             BOOL *pVal) = 0;
        
    };
    
#else 	

    typedef struct IUcadToolImageVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUcadToolImage * This,
             REFIID riid,
             void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUcadToolImage * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUcadToolImage * This);
        
         HRESULT ( STDMETHODCALLTYPE *Load )( 
            IUcadToolImage * This,
             BSTR bsFileName);
        
         HRESULT ( STDMETHODCALLTYPE *Save )( 
            IUcadToolImage * This,
             BSTR bsFileName);
        
         HRESULT ( STDMETHODCALLTYPE *Render )( 
            IUcadToolImage * This,
             HDC hdc,
             long x,
             long y,
             long cx,
             long cy,
             long nStyle,
             VARIANT_BOOL bTransparentBitmap);
        
         HRESULT ( STDMETHODCALLTYPE *GetSize )( 
            IUcadToolImage * This,
             long *pWidth,
             long *pHeight);
        
         HRESULT ( STDMETHODCALLTYPE *GetType )( 
            IUcadToolImage * This,
             short *pType);
        
         HRESULT ( STDMETHODCALLTYPE *IsImageLoaded )( 
            IUcadToolImage * This,
             BOOL *pVal);
        
        END_INTERFACE
    } IUcadToolImageVtbl;

    interface IUcadToolImage
    {
        CONST_VTBL struct IUcadToolImageVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IUcadToolImage_QueryInterface(This,riid,ppvObject)	\
    ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject)) 

#define IUcadToolImage_AddRef(This)	\
    ((This)->lpVtbl -> AddRef(This)) 

#define IUcadToolImage_Release(This)	\
    ((This)->lpVtbl -> Release(This)) 


#define IUcadToolImage_Load(This,bsFileName)	\
    ((This)->lpVtbl -> Load(This,bsFileName)) 

#define IUcadToolImage_Save(This,bsFileName)	\
    ((This)->lpVtbl -> Save(This,bsFileName)) 

#define IUcadToolImage_Render(This,hdc,x,y,cx,cy,nStyle,bTransparentBitmap)	\
    ((This)->lpVtbl -> Render(This,hdc,x,y,cx,cy,nStyle,bTransparentBitmap)) 

#define IUcadToolImage_GetSize(This,pWidth,pHeight)	\
    ((This)->lpVtbl -> GetSize(This,pWidth,pHeight)) 

#define IUcadToolImage_GetType(This,pType)	\
    ((This)->lpVtbl -> GetType(This,pType)) 

#define IUcadToolImage_IsImageLoaded(This,pVal)	\
    ((This)->lpVtbl -> IsImageLoaded(This,pVal)) 

#endif 


#endif 	




#endif 	



#ifndef __UcTcLib_LIBRARY_DEFINED__
#define __UcTcLib_LIBRARY_DEFINED__


 


EXTERN_C const IID LIBID_UcTcLib;

EXTERN_C const CLSID CLSID_UcadToolProperties;

#ifdef __cplusplus

class DECLSPEC_UUID("EC923066-5A17-11E7-B72E-BC5FF42AC839")
UcadToolProperties;
#endif

EXTERN_C const CLSID CLSID_UcadToolImage;

#ifdef __cplusplus

class DECLSPEC_UUID("EC922FD4-5A17-11E7-B72E-BC5FF42AC839")
UcadToolImage;
#endif
#endif 

unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *, unsigned long            , BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned char *, BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); 
void                      __RPC_USER  BSTR_UserFree(     unsigned long *, BSTR * ); 

unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned long *, unsigned long            , VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserMarshal(  unsigned long *, unsigned char *, VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); 
void                      __RPC_USER  VARIANT_UserFree(     unsigned long *, VARIANT * ); 

#ifdef __cplusplus
}
#endif

#endif